package com.platform.server.service;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.platform.server.entity.DemandOrder;
import com.platform.server.entity.Order;
import com.platform.server.entity.ServerOrder;
import com.platform.server.response.pojo.ReturnData;

public interface ServerService {

    /**
     * 选择类型列表
     */
    ReturnData selectServerList();

    /**
     * 选择价格列表
     */
    ReturnData selectPriceList(Integer serverid);

    /**
     * 获取推荐需求列表
     */
    ReturnData selectRecommendDemand(String content, String longitude, String latitude);

    /**
     * 获取推荐服务列表
     */
    ReturnData selectRecommendServer(String content, String longitude, String latitude);

    /**
     * 获取服务列表
     */
    ReturnData selectServiceList(String type, String option, String longitude, String latitude, Integer pageSize, Integer pageNo, String details, String address);

    /**
     * 获取需求列表
     */
    ReturnData selectDemandList(String type, String option, String longitude, String latitude, Integer pageSize, Integer pageNo, String details, String address);

    /**
     * 发布服务
     */
    ReturnData publishServer(ServerOrder server);
    /**
     * 修改服务
     */
    ReturnData updatePublishServer(ServerOrder server);

    /**
     * 发布需求
     */
    ReturnData publishDemand(DemandOrder server);
    /**
     * 修改需求
     */
    ReturnData updatePublishDemand(DemandOrder server);
    /**
     * 关注服务
     */
    ReturnData concernServer(String userid, String serverid);

    /**
     * 取消关注服务
     */
    ReturnData cancelConcernServer(String userid, String serverid);

    /**
     * 需求资料详情
     */
    ReturnData selectDemandInfo(Integer id, String userid, String type, String longitude, String latitude);

    /**
     * 确认预约
     */
    ReturnData sureMakeServer(String userid, String serverid, String type, String longitude, String latitude);

    /**
     * 立即预约
     */
    ReturnData nowMake(Order order);

    /**
     * 关注需求
     */
    ReturnData concernDemand(String userid, String demandid);

    /**
     * 取消关注需求
     */
    ReturnData cancelConcernDemand(String userid, String demandid);

    /**
     * 档期取消订单
     */
    ReturnData cancelOrder(Integer orderid, String userid, String type) throws Exception;

    /**
     * 档期确认完成
     */
    ReturnData confirmOrder(Integer orderid, Integer type);

    /**
     * 档期删除
     */
    ReturnData deleteServerOrder(Integer serverid, String userid);

    /**
     * 需求确认完成
     */
    ReturnData demandSure(Integer demandid, Integer orderid);

    /**
     * 需求删除
     */
    ReturnData deleteDemand(Integer demandid, Integer orderid, String retractor);

    /**
     * 需求报名
     */
    ReturnData applyDemand(String demandid, String userid, String longitude, String latitude);

    /**
     * 取消需求报名
     */
    ReturnData cancelApplyDemand(String demandid, String userid);

    /**
     * 我的档期
     */
    ReturnData selectUserAuction(String userid, String type, String byUserid, Integer pageSize, Integer pageNo);

    /**
     * 删除发布服务
     */
    ReturnData deletePublishServer(Integer serverid);

    /**
     * 档期评价
     */
    ReturnData auctionAppraise(String star_level, String give_reward, String content, String upload_image,
                               String user_id, String comment_id, String service_id, String pay_type, String ip, String password);

    /**
     * 档期详情
     */
    ReturnData selectAuctionInfo(Integer orderid, String order_type, String userid);

    /**
     * 支付违约金30元
     */
    ReturnData payDamages(String userid, String gainUserid, String payMethod, String body, String subject, String payMoney, String ip, String password, String orderid, String type) throws Exception;

    /**
     * 我发布的需求
     */
    ReturnData selectUserIssueDemand(String userid, Integer pageSize, Integer pageNo);

    /**
     * 我报名的需求
     */
    ReturnData selectUserApplyDemand(String userid, Integer pageSize, Integer pageNo);

    /**
     * 我的需求详情
     */
    ReturnData selectUserDemandInfo(Integer demandid, Integer type, String longitude, String latitude, String userid);

    /**
     * 首页
     */
    ReturnData selectIndexList(String address, String longitude, String latitude, Integer pageSize, Integer pageNo);

    /**
     * 开始服务
     */
    ReturnData updateOrderStatuIsServer(Integer id);

    /**
     * 订单提交完成
     */
    ReturnData orderSubmitFinish(Integer orderid);

    /**
     * 查看会员列表
     */
    ReturnData vipList(String userId);

    ReturnData cancelOrder(String userid, Integer orderid);

    ReturnData getReturnData(String star_level, String user_id, String service_id, Map<String, Object> map);

    void insertMsg(String userid, Order order);

    ReturnData isLate(Integer orderid);
}
